8199
23200
Jeg har et array statsnavn som
eple
X
banan
Y
Kiwi
z
Jeg må legge eple, banan og kiwi i en rekke frukt og X, Y og Z i en gruppe som kalles alfabeter.
Noen enkle C # mekanismer for det takk? 
Bruk IEnumerable . Der overbelastning som leverer indeksen.
var fruits = statsname.Where ((s, i) => i% 2 == 0) .ToArray ();
var alfabeter = statsnavn.Where ((s, i) => i% 2! = 0) .ToArray ();
|
Stjålet fra Hvordan få alternative elementer ved hjelp av Enumerable in C #
var frukt = myArray.Where ((t, i) => i% 2 == 0) .ToArray ();
var alfabeter = myArray.Where ((t, i) => i% 2 == 1) .ToArray ();
|
Hvis jeg har forstått det, er det veldig enkelt å stille spørsmål ved hva du vil:
Du vil sette frukt i en rekke frukt og det samme for alfabeter, og de vises alternativt i matrisen statsnavn slik:
for (int i = 0, j = 0; i  liste = ny liste  () {"eple", "X", "banan", "Y", "Kiwi", "z"};
var resultat = liste.Velg ((l, i) => ny {l, i})
.GroupBy (p => p.i% 2)
.Velg (x => x.Velg (v => v.l) .ToList ())
.Ramse opp();
Så har du en liste over lister:
|
liste  frukt = ny liste  ();
liste  alfabetet = ny liste  ();
for (int i = 0; i  everyOther  (IEnumerable  collection)
{
bruker (var e = collection.GetEnumerator ()) {
mens (e.MoveNext ()) {
avkastning avkastning e.Current;
e.MoveNext (); // hopp over en
}
}
}
Du kan bruke System.Linq.Skip til å hoppe over det første elementet.
streng [] ord = "eple X banan Y Kiwi z" .Split ();
var frukt = alle andre (ord);
var alfabeter = hverandre (ord.Skip (1));
Bare bruk dem som en ny samling eller ring .ToArray () eller .ToList () på dem:
foreach (streng f i frukt)
Console.WriteLine (f);
streng [] anArray = fruits.ToArray (); // ved hjelp av System.Linq
Nå har du det du trenger.
Iteratorer er metoder som gir avkastning, se Iteratorer (C # Programming Guide). Dette er veldig sterkt ved språket. Du kan:
hopp over elementer
dekorere elementer
endre rekkefølge
sammenkoblede sekvenser (se System.Linq.Concat)
...
|
Her er noen arbeidskoder, forhåpentligvis vil dette være nyttig for deg:
bruker System;
ved hjelp av System.Collections.Generic;
bruker System.IO;
ved hjelp av System.Linq;
bruker System.Text;
ved hjelp av System.Threading.Tasks;
navneområde ReadFile
{
klasse Program
{
statisk ugyldig ReadFile (strengfilPath, List  custumerNames, List  phoneNumbers)
{
strengelinje = streng.Tom;
var fileStream = ny StreamReader (filePath);
bool isPhoneNumber = true;
mens ((line = fileStream.ReadLine ())! = null)
{
hvis (isPhoneNumber)
{
phoneNumbers.Add (Convert.ToInt32 (linje));
isPhoneNumber = false;
}
ellers
{
custumerNames.Add (linje);
isPhoneNumber = true;
}
}
fileStream.Close ();
}
statisk tomrom Main (streng [] args)
{
Console.WriteLine ("Begynte å lese filen ...");
Liste  custumersNamesList = ny liste  ();
Liste  custumersPhonesNumbers = ny liste  ();
ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers);
// Forutsatt at begge listene har samme lengde.
for (int i = 0; i